The term “firmware” denotes software components necessary to operate one or more hardware components, and that are normally independent of operating system. Firmware components are normally stored in a non-volatile memory of a hardware component itself or in a non-volatile memory of a system component. An example of a firmware component is the Basic Input Output System (BIOS) used to start a computer system.
Methods of updating firmware components of a computer system are widely known. The continually increasing complexity of computer systems and of the hardware components installed therein means that there is a great need for firmware components to be updated. Updating the firmware components closes security gaps that have recently become known or extends the functionality of the hardware components, for example.
Practically every manufacturer of hardware components provides ways to update the firmware components that it provides. By way of example, manufacturers of hardware components usually provide what are known as flash programs to update a programmable flash memory with a piece of updated firmware.
The multiplicity of firmware components that a computer system contains, on the one hand, and the increasing frequency of update thereof, on the other hand, mean that the outlay to maintain a computer system, particularly keeping the firmware components installed thereon running, is continually increasing. This is disruptive particularly in server computers, which are normally continuously in operation and therefore have only limited availability for maintenance work. In addition, manual installation of update packets by an administrator or user of a computer system gives rise to a large time involvement. In addition, the manufacturer needs to develop and maintain a plurality of different software tools to allow firmware components in different operating system environments to be updated.
It could therefore be helpful to provide methods and apparatus that simplify update of firmware components of computer systems. Preferably, they can reduce both the work involvement for an administrator and the system burden on the computer system itself and be largely independent of an operating system of the computer system.